home *** CD-ROM | disk | FTP | other *** search
/ Gekkan Dennou Club 140 / Gekkan Dennou Club - 2000.1 Vol. 140 (Japan).7z / Gekkan Dennou Club - 2000.1 Vol. 140 (Japan) (Track 1).bin / tools / xpicw / xpicw110.lzh / FPIC / FPIC.has < prev    next >
Encoding:
Text File  |  1995-07-18  |  4.0 KB  |  197 lines

  1. *///////*///////*///////*///////*///////*///////*///////
  2. *    激速PICローダー FPIC.r by 幽玄 1995
  3. *///////*///////*///////*///////*///////*///////*///////
  4.         include    IOCSCALL.mac
  5.         include    DOSCALL.mac
  6.         include    SYS_FPIC.mac
  7.  
  8.         request    SYS_FPIC.o        * Makeは使わない人なので。
  9.                         * これをSYS_SPIC.o にすれば小型版。
  10.         .xref    _Fpic_load
  11.         .xref    _Fpic_keep
  12.         .xref    _Fpic_disp
  13.         .xref    _Fpic_free
  14.         .xref    _Fpic_set_buf
  15.  
  16.         .text
  17. *///////////////////////////////////////////////*
  18. *    余分なメモリをお返しする        *
  19. *///////////////////////////////////////////////*
  20. *    MEM_OPT                    *
  21. *///////////////////////////////////////////////*
  22. MEM_OPT        .macro    stk_size
  23.         .local    MO_00
  24.  
  25.         lea    $10(a0),a0
  26.         adda.l    #stk_size,a1
  27.         sub.l    a0,a1
  28.         movem.l    a0/a1,-(sp)
  29.         DOS    _SETBLOCK
  30.         addq.w    #8,sp
  31.         add.l    a0,a1
  32.         lea    -$10(a0),a0
  33.         tst.l    d0
  34.         bmi    MO_00
  35.         lea    (a1),sp
  36. MO_00:
  37.         .endm
  38.  
  39. *///////*///////*///////*///////*///////*///////*///////
  40.  
  41. entry:        MEM_OPT    2048
  42.         bmi    ML_err
  43.  
  44.         tst.b    (a2)+
  45.         beq    usage
  46.  
  47.         suba.l    a1,a1
  48.         IOCS    _B_SUPER
  49.         move.l    d0,-(sp)
  50.  
  51.         IOCS    _OS_CUROF
  52.  
  53.         FP_KEEP    (a2)            *データをメモリに読み込む
  54.         cmp.w    #-1,d0
  55.         beq    FN_err
  56.         cmp.w    #-2,d0
  57.         beq    DF_err
  58.         cmp.w    #-3,d0
  59.         beq    ML_err
  60.         move.l    d0,a0
  61.  
  62.         lea    _512x512_64K_H(pc),a1
  63.         btst.b    #fpf_SQ,fpw_FLAG1(a0)    *スクエアモード?
  64.         beq    1f
  65.         lea    _768x512_64K_H(pc),a1
  66.  
  67. 1:        pea    (a1)
  68.         bsr    _set_CRT
  69.         addq.w    #4,sp
  70.  
  71.         moveq.l    #0,d0
  72.         moveq.l    #0,d1
  73.         btst.b    #fpf_XY,fpw_FLAG1(a0)    *座標指定はあるか?
  74.         beq    1f
  75.         move.w    fpw_X(a0),d0        *┐座標指定が無くても、
  76.         move.w    fpw_Y(a0),d1        *┘(0,0)が入ってるんだけどね。
  77.  
  78. 1:        FP_DISP    a0,d0,d1        *データを表示する
  79.  
  80.         FP_FREE    a0            *解放
  81.  
  82.         IOCS    _OS_CURON
  83.         movea.l    (sp)+,a1
  84.         IOCS    _B_SUPER
  85.         DOS    _EXIT
  86.  
  87. ML_err:        pea    ML_err_pr(pc)
  88.         bra    exit
  89.  
  90. FN_err:        pea    FN_err_pr(pc)
  91.         bra    exit
  92.  
  93. DF_err:        pea    DF_err_pr(pc)
  94.         bra    exit
  95.  
  96. usage:        pea    usage_pr(pc)
  97. exit:        DOS    _PRINT
  98.         addq.w    #4,sp
  99.         pea    -1.w
  100.         DOS    _EXIT2
  101.  
  102. ML_err_pr:    dc.b    'メモリが足りません.',$0d,$0a,0
  103. FN_err_pr:    dc.b    'ファイルが読めません.',$0d,$0a,0
  104. DF_err_pr:    dc.b    '未対応フォーマットです.',$0d,$0a,0
  105. usage_pr:    dc.b    '[ FPIC.r ver 1.7 ] by 鳳幽玄 1995',$0d,$0a
  106.         dc.b    'usage : FPIC FileName',$0d,$0a
  107.         dc.b    0
  108.         .even
  109.  
  110.  
  111.  
  112.  
  113. *    画面モード設定:暫定版
  114.  
  115.  
  116. _768x512_64K_H:    dc.w    137,14,28,124,567,5,40,552,%011_000_10110
  117. _512x512_64K_H:    dc.w    91,9,17,81,567,5,40,552,%011_000_10101
  118.  
  119.         *    0 1 2 3 4 5 6 7 8 9 A B C D E F
  120. CRTM_prw:    dc.b    4,2,9,9,9,2,9,9,9,9,9,9,9,9,9,9        *0
  121.         dc.b    3,1,9,9,9,1,0,9,9,9,9,9,9,9,9,9        *1
  122.  
  123.         .offset    0
  124. CRTCD_R0:    ds.w    1
  125. CRTCD_R1:    ds.w    1
  126. CRTCD_R2:    ds.w    1
  127. CRTCD_R3:    ds.w    1
  128. CRTCD_R4:    ds.w    1
  129. CRTCD_R5:    ds.w    1
  130. CRTCD_R6:    ds.w    1
  131. CRTCD_R7:    ds.w    1
  132. CRTCD_R20:    ds.w    1
  133.         .text
  134.  
  135. _set_CRT:    movem.l    d0-d1/a0-a1,-(sp)
  136.         movea.l    4*5(sp),a0
  137.  
  138.         move.b    CRTCD_R20+1(a0),d0
  139.         andi.w    #%000_11111,d0
  140.         move.b    CRTM_prw(pc,d0.w),d0
  141.  
  142.         move.w    $e80028,d1
  143.         andi.w    #%000_11111,d1
  144.         cmp.b    CRTM_prw(pc,d1.w),d0
  145.  
  146.         bls    set_CRT_low_hi
  147.         bra    set_CRT_hi_low
  148.  
  149. 9:        moveq.l    #128-1,d0
  150.         lea    $e82000,a0
  151.         moveq.l    #0,d1
  152.         move.l    #$0001_0001,d1
  153.         move.l    #$0202_0202,d2
  154. 1:        move.l    d1,(a0)+
  155.         add.l    d2,d1
  156.         dbra    d0,1b
  157.  
  158.         clr.l    $e80018
  159.         clr.l    $e80018+4
  160.         clr.l    $e80018+8
  161.         clr.l    $e80018+12
  162.         movem.l    (sp)+,d0-d1/a0-a1
  163.         rts
  164.  
  165. set_CRT_hi_low:    lea    $e80002,a1            *高から低へ
  166.         move.w    CRTCD_R20(a0),d0    *
  167.         move.w    d0,$e80028        *R20
  168.         move.w    (a0)+,d1        *
  169.         move.w    (a0)+,(a1)+        *R1
  170.         move.w    (a0)+,(a1)+        *R2
  171.         move.w    (a0)+,(a1)+        *R3
  172.         move.w    (a0)+,(a1)+        *R4
  173.         move.w    (a0)+,(a1)+        *R5
  174.         move.w    (a0)+,(a1)+        *R6
  175.         move.w    (a0)+,(a1)+        *R7
  176.         move.w    d1,$e80000        *R0
  177.         lsr.w    #8,d0            *
  178.         move.w    d0,$e82400        *V.C R1
  179.         move.w    #%0010_1111,$e82600    *V.C R3
  180.         bra    9b
  181.  
  182. set_CRT_low_hi:    lea    $e80000,a1                *低から高へ
  183.         move.w    (a0)+,(a1)+        *R0
  184.         move.w    (a0)+,(a1)+        *R1
  185.         move.w    (a0)+,(a1)+        *R2
  186.         move.w    (a0)+,(a1)+        *R3
  187.         move.w    (a0)+,(a1)+        *R4
  188.         move.w    (a0)+,(a1)+        *R5
  189.         move.w    (a0)+,(a1)+        *R6
  190.         move.w    (a0)+,(a1)+        *R7
  191.         move.w    (a0)+,d0        *
  192.         move.w    d0,$e80028        *R20
  193.         lsr.w    #8,d0            *
  194.         move.w    d0,$e82400        *V.C R1
  195.         move.w    #%0010_1111,$e82600    *V.C R3
  196.         bra    9b
  197.